/*
 *   Grupo 2:		Ana Elisa Siena			7126563
 *                       Larissa Zimmermann		7126879
 * 
 *   Jogo em Java - AngryBirds
 *   SCC - 604 - Programação Orientada a Objetos
 *   Prof. Fernando V. Paulovich
 *   Engenharia de Computação 010 - USP - São Carlos
 *   Segundo Semestre de 2011 
 *	
 */
package angrybirds.fases;

import angrybirds.main.Angrybirds;
import angrybirds.personagens.Passaro;
import org.newdawn.slick.Animation;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.Sound;
import org.newdawn.slick.SpriteSheet;
import org.newdawn.slick.geom.Polygon;
import org.newdawn.slick.geom.Vector2f;
import org.newdawn.slick.state.StateBasedGame;

/*******************************************************************************
 *	Nome da classe:     Fase 2
 *	O que faz:          Inicializa e roda a fase 2          		
 *******************************************************************************/
public class Fase2 extends FaseGeral {

    private int stateID = -1;
    private Polygon passaro = new Polygon(new float[]{395, 500, 360, 570, 430, 570});

    public Fase2(int FASE1) {
        this.stateID = FASE1;
    }

    @Override
    public int getID() {
        return this.stateID;
    }

    /*********************************************************************************
     *	Neste método, inicializamos a fase 2
     *********************************************************************************/
    @Override
    public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {

        super.init(gc, sbg);

        this.setsBGame(sbg);

        //Inicializamos o número de porcos e pássaros da fase
        this.setNum_porcos(7);
        this.setNum_passaros(9);

        //Inicializamos a posição do pássaro
        this.setPosicaoPassaro(new Vector2f(360, 500));

        //Animação do Passaro e inicialização de sua vida
        SpriteSheet Passaro_amarelo = new SpriteSheet("imagensJogo/PassaroAmarelo.png", 70, 70);
        Animation passaro_amarelo = new Animation(true);
        Anima_Passaro = new Passaro("Amarelo", passaro_amarelo, Passaro_amarelo, this.getPosicaoPassaro(), this.getPosicaoPassaro(), this.passaro, 0);
        Anima_Passaro.renderizar();
        Anima_Passaro.setVida_passaro(1);

        //Inicialização do som do pássaro
        passaroAparecendo = new Sound("sons/PassaroAmarelo.wav");
    }

    /*********************************************************************************
     *	Neste método, renderizamos a fase 2
     *********************************************************************************/
    @Override
    public void render(GameContainer gc, StateBasedGame sbg, Graphics grphcs) throws SlickException {

        this.setRapidez_porco(450);

        super.render(gc, sbg, grphcs);

        if (this.getNum_passaros() != 0) {
            //grphcs.draw(this.Anima_Passaro.getShape());
            Anima_Passaro.render(grphcs);
        }

        grphcs.drawString("Fase: 2", 400, 10);
    }

    /*********************************************************************************
     *	Neste método, fazemos a atualização da fase 2
     *********************************************************************************/
    @Override
    public void update(GameContainer gc, StateBasedGame sb, int delta) throws SlickException {

        super.update(gc, sb, delta);

        //A pessoa ganhou (ou seja, fez o maior número de pontos, matando todos os porcos)
        if (this.getPlayer().getScore() >= this.getNum_porcos() * 100 || this.getNum_porcos() == 0) {

            //passamos para fase 3
            sb.enterState(Angrybirds.FASE3);
            this.getMusicaFundo().stop();
            this.setPONTOS(this.getPONTOS() + this.getPlayer().getScore());

            //e inicializamos a fase 2 (caso o jogador volte a querer jogá-la)
            init(gc, this.getsBGame());
            System.out.println("Potuação2:"+ this.getPONTOS());
        }

        //A pessoa perdeu (ou seja, ficou sem vidas)
        if (this.getNum_passaros() == 0 && this.getNum_porcos() != 0) {
            
            //passamos para tela "perdeu"
            sb.enterState(Angrybirds.PERDEU);
            
            //e inicializamos a fase 2 (caso o jogador volte a querer jogá-la)
            init(gc, this.getsBGame());
        }
    }
}
